namespace CLELCore.Executable
{
	public class DOSHeader
	{
		public const int LFANEW_OFFSET = 0x3c;
		
		private short _magicnumber;
		private short _lastpageoffile;
		private short _pagesinfile;
		private short _relocations;
		private short _sizeofheader;
		private short _minparagraphs;
		private short _maxparagraphs;
		private short _initialssvalue;
		private short _initialspvalue;
		private short _checksum;
		private short _initialipvalue;
		private short _initialcsvalue;
		private short _relocationstable;
		private short _overlaynumber;
		private byte[] _reserved;
		private short _oemidentifier;
		private short _oeminformation;
		private byte[] _reserved2;
		//lfanew
		private int _signatureoffset;
		private byte[] _dosstub;

		public short MagicNumber
		{
			get
			{
				return _magicnumber;
			}
			set
			{
				_magicnumber = value;
			}
		}
		public short LastPageOfFile
		{
			get
			{
				return _lastpageoffile;
			}
			set
			{
				_lastpageoffile = value;
			}
		}
		public short PagesInFile
		{
			get
			{
				return _pagesinfile;
			}
			set
			{
				_pagesinfile = value;
			}
		}
		public short Relocations
		{
			get
			{
				return _relocations;
			}
			set
			{
				_relocations = value;
			}
		}
		public short SizeOfHeader
		{
			get
			{
				return _sizeofheader;
			}
			set
			{
				_sizeofheader = value;
			}
		}
		public short MinParagraphs
		{
			get
			{
				return _minparagraphs;
			}
			set
			{
				_minparagraphs = value;
			}
		}
		public short MaxParagraphs
		{
			get
			{
				return _maxparagraphs;
			}
			set
			{
				_maxparagraphs = value;
			}
		}
		public short InitialSSValue
		{
			get
			{
				return _initialssvalue;
			}
			set
			{
				_initialssvalue = value;
			}
		}
		public short InitialSPValue
		{
			get
			{
				return _initialspvalue;
			}
			set
			{
				_initialspvalue = value;
			}
		}
		public short Checksum
		{
			get
			{
				return _checksum;
			}
			set
			{
				_checksum = value;
			}
		}
		public short InitialIPValue
		{
			get
			{
				return _initialipvalue;
			}
			set
			{
				_initialipvalue = value;
			}
		}
		public short InitialCSValue
		{
			get
			{
				return _initialcsvalue;
			}
			set
			{
				_initialcsvalue = value;
			}
		}
		public short RelocationsTable
		{
			get
			{
				return _relocationstable;
			}
			set
			{
				_relocationstable = value;
			}
		}
		public short OverlayNumber
		{
			get
			{
				return _overlaynumber;
			}
			set
			{
				_overlaynumber = value;
			}
		}
		public byte[] Reserved
		{
			get
			{
				return _reserved;
			}
			set
			{
				_reserved = value;
			}
		}
		public short OEMIdentifier
		{
			get
			{
				return _oemidentifier;
			}
			set
			{
				_oemidentifier = value;
			}
		}
		public short OEMInformation
		{
			get
			{
				return _oeminformation;
			}
			set
			{
				_oeminformation = value;
			}
		}
		public byte[] Reserved2
		{
			get
			{
				return _reserved2;
			}
			set
			{
				_reserved2 = value;
			}
		}
		//lfanew
		public int SignatureOffset
		{
			get
			{
				return _signatureoffset;
			}
			set
			{
				_signatureoffset = value;
			}
		}
		public byte[] DOSStub
		{
			get
			{
				return _dosstub;
			}
			set
			{
				_dosstub = value;
			}
		}

		public DOSHeader()
		{
		}
	}
}
